﻿using CCWin;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using 群智感知激励系统服务端底层;

namespace 群智感知激励系统服务端
{
    public partial class 用户虚拟货币窗口 : CCSkinMain
    {
        private long 时刻;
        private 用户 用户;
        private 虚拟货币 虚拟货币;
        private Random ran = new Random();

        public 用户虚拟货币窗口(用户 _用户)
        {
            InitializeComponent();
            用户 = _用户;
            时刻 = 全局.stopwatch.ElapsedMilliseconds;
            Text = 用户.临时id.ToString();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            虚拟货币lv.BeginUpdate();
            虚拟货币lv.Items.Clear();

            foreach (虚拟货币 i in 用户.虚拟货币列表)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.Text = i.序号.ToString();
                lvi.SubItems.Add(i.id.ToString());
                lvi.SubItems.Add(i.加密id);
                if (i.时刻 > 时刻)
                    lvi.SubItems[0].BackColor = Color.LightBlue;
                if (i.可用性 == true)
                    lvi.SubItems.Add("可用");
                else
                {
                    lvi.SubItems.Add("不可用");
                    lvi.SubItems[0].BackColor = Color.Pink;
                }
                虚拟货币lv.Items.Add(lvi);
            }
            虚拟货币lv.EndUpdate();
        }

        private void 虚拟货币lv_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (虚拟货币lv.SelectedItems.Count > 0)
                timer1.Enabled = false;
            else
                timer1.Enabled = true;
        }

        private void 用户虚拟货币窗口_Load(object sender, EventArgs e)
        {
            虚拟货币lv.BeginUpdate();
            虚拟货币lv.Items.Clear();

            foreach (虚拟货币 i in 用户.虚拟货币列表)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.Text = i.序号.ToString();
                lvi.SubItems.Add(i.id);
                lvi.SubItems.Add(i.加密id);
                if (i.可用性 == true)
                    lvi.SubItems.Add("可用");
                else
                {
                    lvi.SubItems.Add("不可用");
                    lvi.SubItems[0].BackColor = Color.Pink;
                }
                虚拟货币lv.Items.Add(lvi);
            }
            虚拟货币lv.EndUpdate();
        }

        private void 交换ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if(虚拟货币!=null)
            lock (虚拟货币)
            {
                if (虚拟货币lv.SelectedItems.Count > 0)
                {
                    if (虚拟货币.可用性 == false)
                        return;
                    虚拟货币 = 用户.虚拟货币列表.Find(c => c.加密id == 虚拟货币lv.SelectedItems[0].SubItems[2].Text&&c.可用性==true);
                    List<用户> 交换用户列表 = 用户.历史用户.FindAll(c => c != 用户);
                    用户 交换用户 = null; ;
                    if (交换用户列表.Count > 0)
                        交换用户 = 交换用户列表[ran.Next(0, 交换用户列表.Count)];
                    else
                        return;

                    if (虚拟货币 != null)
                    {
                        虚拟货币 交换货币 = 交换用户.虚拟货币列表[ran.Next(0, 交换用户.虚拟货币列表.Count)];
                        交换货币.所属用户 = 用户;
                        交换货币.加密id = "{" + 交换货币.加密id + "|" + 虚拟货币.GetRandomString(32, true, false, true, false, "") + "}spub";
                        虚拟货币.所属用户 = 交换用户;
                        虚拟货币.加密id= "{"+ 虚拟货币.加密id+"|" + 虚拟货币.GetRandomString(32, true, false, true, false, "") + "}spub";
                    }
                    用户虚拟货币窗口 f = new 用户虚拟货币窗口(交换用户);
                    f.Show();
                }
            }
        }

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
            //timer1.Enabled = false;
        }

        private void contextMenuStrip1_Closing(object sender, ToolStripDropDownClosingEventArgs e)
        {
            //timer1.Enabled = true;
        }

        private void 虚拟货币lv_Click(object sender, EventArgs e)
        {
            if (虚拟货币lv.SelectedItems.Count > 0)
            {
                虚拟货币 = 用户.虚拟货币列表.Find(c => c.加密id == 虚拟货币lv.SelectedItems[0].SubItems[2].Text);
            }
        }

        private void contextMenuStrip1_Closed(object sender, ToolStripDropDownClosedEventArgs e)
        {
            timer1.Enabled = true;
        }

        private void 更新ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (虚拟货币 != null)
                lock (虚拟货币)
            {
                if (虚拟货币lv.SelectedItems.Count > 0)
                {
                    if (虚拟货币.可用性 == false||虚拟货币.加密id.Length<=32)
                        return;
                    虚拟货币.可用性 = false;
                    虚拟货币.产生虚拟货币(用户, 1);
                }
            }
        }
    }
}